﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#if !DOT_NET
using Windows.Foundation;

#endif

namespace StyleMVVM.Suspension
{
	public interface ISyncService
	{
#if NETFX_CORE
		IAsyncAction LoadStateFromDisk();

		IAsyncAction Suspend();
#else
		Task LoadStateFromDisk();

		Task Suspend();
#endif

		void RegisterTypeForSync(Type syncType);

		void RegisterInstanceForSync(object value);

		void RegisterInstanceForSyncWithContext(object value, string context);

		void Sync(object value);

		void SyncWithContext(object value, string context);

		void Resume(object value);

		void ResumeWithContext(object value, string context);
	}
}